/**
 * @brief unix socket服务器模块
 * @version 1.0
 * @author 宋炜
 */

 #pragma once

 #include <atomic>
 #include <condition_variable>
 #include <mutex>
 #include <thread>
 
 #include "ipcItfc.hpp"
 
class unixSock : public ipcItfc
{
 private:
    std::string             m_sock_name__;
    int                     m_sock_fd__{ -1 };
    std::atomic< bool >     m_is_running__{ false };    
    std::thread             m_thd__;
 private:
     /**
      * @brief 后台以线程的方式运行从标注输入流读取数据，然后通知日志文件引擎保存数据
      */
     void backend__();
 public:
    /**
     * @brief 构造函数
     * @details 该构造函数负责初始化unix socket服务器
     * @param name unix socket节点名称
     */
    unixSock( const std::string& name );
    ~unixSock();
    /**
     * @brief 启动unix socket服务器
     * @details 该函数负责启动unix socket服务器，开始从标准输入流读取数据
     * @param sw true 启动 false 停止
     * @return true 启动成功
     * @return false 启动失败
     */
    virtual bool start( bool sw ) override;
};